<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>绘制3d机器人</title>
  <style>
    body {
      margin: 0;
      overflow: hidden;
    }
  </style>
<script src="http://www.yanhuangxueyuan.com/versions/threejsR92/build/three.js"></script>
<script src="js/controls/OrbitControls.js"></script>
</head>
 
<body>
  <script>
    /**
     * 创建场景对象Scene
     */
    var scene = new THREE.Scene();
    /**
     * 创建网格模型
     */
    // var geometry = new THREE.SphereGeometry(60, 40, 40); //创建一个球体几何对象
    /************************body****************************/
    var geometry = new THREE.BoxGeometry(100,200,120); //创建一个立方体几何对象Geometry
    var material = new THREE.MeshLambertMaterial({
      color: 0x000ff0
    }); //材质对象Material
    var mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
    scene.add(mesh); //网格模型添加到场景中
 
	/************************head****************************/
    var geometry1 = new THREE.SphereGeometry(50,40,40); //创建一个立方体几何对象Geometry
    var material1 = new THREE.MeshLambertMaterial({
      color: 0xffffff
    }); //材质对象Material
    var mesh1 = new THREE.Mesh(geometry1, material1); //网格模型对象Mesh
    mesh1.translateY(150);
    scene.add(mesh1); //网格模型添加到场景中
 
   	/************************hand-left****************************/
    var geometry2 = new THREE.BoxGeometry(30,100,30); //创建一个立方体几何对象Geometry
    var material2 = new THREE.MeshLambertMaterial({
      color: 0x00ff00
    }); //材质对象Material
    var mesh2 = new THREE.Mesh(geometry2, material2); //网格模型对象Mesh
    mesh2.translateZ(80);
    mesh2.translateY(20);
    scene.add(mesh2); //网格模型添加到场景中
 
   	/************************hand-right****************************/
    var geometry3 = new THREE.BoxGeometry(30,100,30); //创建一个立方体几何对象Geometry
    var material3 = new THREE.MeshLambertMaterial({
      color: 0x00ff00
    }); //材质对象Material
    var mesh3 = new THREE.Mesh(geometry3, material3); //网格模型对象Mesh
    mesh3.translateZ(-80);
    mesh3.translateY(20);
    scene.add(mesh3); //网格模型添加到场景中
 
    /************************foot-left****************************/
    var geometry4 = new THREE.BoxGeometry(40,130,40); //创建一个立方体几何对象Geometry
    var material4 = new THREE.MeshLambertMaterial({
      color: 0x00ff00
    }); //材质对象Material
    var mesh4 = new THREE.Mesh(geometry4, material4); //网格模型对象Mesh
    mesh4.translateZ(-30);
    mesh4.translateY(-170);
    scene.add(mesh4); //网格模型添加到场景中
 
    /************************foot-right****************************/
    var geometry5 = new THREE.BoxGeometry(40,130,40); //创建一个立方体几何对象Geometry
    var material5 = new THREE.MeshLambertMaterial({
      color: 0x00ff00
    }); //材质对象Material
    var mesh5 = new THREE.Mesh(geometry5, material5); //网格模型对象Mesh
    mesh5.translateZ(30);
    mesh5.translateY(-170);
    scene.add(mesh5); //网格模型添加到场景中
 
    var axesHelper = new THREE.AxesHelper( 500 );
	scene.add( axesHelper );
    /**
     * 光源设置
     */
    //点光源
    var point = new THREE.PointLight(0xffffff);
    point.position.set(400, 200, 300); //点光源位置
    scene.add(point); //点光源添加到场景中
    //环境光
    var ambient = new THREE.AmbientLight(0x000000);
    scene.add(ambient);
    // console.log(scene)
    // console.log(scene.children)
    /**
     * 相机设置
     */
    var width = window.innerWidth; //窗口宽度
    var height = window.innerHeight; //窗口高度
    var k = width / height; //窗口宽高比
    var s = 500; //三维场景显示范围控制系数，系数越大，显示的范围越大
    //创建相机对象
    var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
    camera.position.set(200, 0, 0); //设置相机位置
    camera.lookAt(scene.position); //设置相机方向(指向的场景对象)
    /**
     * 创建渲染器对象
     */
    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(width, height);//设置渲染区域尺寸
    renderer.setClearColor(0xb9f3ff, 1); //设置背景颜色
    document.body.appendChild(renderer.domElement); //body元素中插入canvas对象
    //执行渲染操作   指定场景、相机作为参数
 //    renderer.render(scene, camera);
 //    function render() {
	//  	renderer.render(scene,camera);//执行渲染操作
	// }
	// render();
	// var controls = new THREE.OrbitControls(camera,renderer.domElement);//创建控件对象
	// controls.addEventListener('change', render);//监听鼠标、键盘事件
	function render() {
	  renderer.render(scene,camera);//执行渲染操作
	  // mesh.rotateY(0.01);//每次绕y轴旋转0.01弧度
	  requestAnimationFrame(render);//请求再次执行渲染函数render
	}
	render();
	var controls = new THREE.OrbitControls(camera,renderer.domElement);//创建控件对象
	// 已经通过requestAnimationFrame(render);周期性执行render函数，没必要再通过监听鼠标事件执行render函数
	// controls.addEventListener('change', render)
  </script>
</body>
</html>